Summary
	An ActiveX scrollbar which can provide the most demanding scrolling needs of a programmer without the hassles commonly encountered in other kinds of scrollbar. 

New in this Version 2.30
	The mousewheel notification mechanism which was connected to the the same function dealing with setting the scroll position programatically simply didn't work because as we all know such kind of notification was blocked from day one the control  started existing. It was by design. Now, the notification is unblocked, and sent like other change notifications.
(A) Users Additional Guide
	Together with making the mousewheel functional, Keyboard control is likewise provided, either purely or in combination with the mousewheel.
	When the mousewheel, is used alone, it changes position by the line (or singly). If the SHIFT key is pressed, it scans by the pagesize. On the other hand, if the CTRL key is pressed, it moves either to the absolute begining line or the farthest possible line reachable considering the indent.
	When the keyboard is utilized purely, there are three keysets to consider: the arrow keys, the page keys, and the home and end keys. Note that each set may be modified by the SHIFT or CNTL keys. The  arrow keys may also be used with the ALT key not for scrolling purposes but for changing the tracklevel.
	(a) The ARROW keys, LEFT and RIGHT for horizontal scrollbars, and UP and DOWN for vertical ones; 
		Each key changes position by the line (or singly). If the SHIFT key is pressed, it scans by the pagesize. On the other hand, if the CTRL key is pressed, it moves either to the absolute begining line or the farthest possible line reachable considering the indent.
		These operations are similar to mousewheel-keyboard combinations.
	(b) The PGUP and PGDN keys;
		The key changes the position of the scrollbar by pagesize. If the SHIFT key is pressed, it scans by the current fine extent. On the other hand, if the CTRL key is pressed, it moves by the current coarse extent.
	(c) The HOME and END keys.
		The keys move either to the absolute begining line or the farthest possible line reachable considering the indent.
		For both SHIFT and CNTL modification, consider the whole range of the scrollbars as divided into several segments or sets of lines. These segments are equal to either the fine extent (SHIFT) or the coarse extent (CNTL). If the HOME key is pressed the scrollbar points the beginning of current segment it is currently positioned. Pressing the END key, it moves to the farthest possible line reachable within the same segment considering the indent.
	One final note to users: ARROWUP and PGUP decrease position, and ARROWDN and PGDN increase position. The switch is due to the orientation of  the keys with respect to the physical scrollbar on the screen. To further give you a hint, please follow the HOME and END orientation, the former being "on top" of the latter.

(B) Programmers Additional Guide
	Please note that ALL changes in position now triggers the property change event to be fired. Formerly, changes made programmatically through the use of the SetNcSIPos(...) did not cause the firing.
	More importantly, we know that both the mousewheel and the keyboard may report aggregated values to the control, that is,  summing up all repetitions first.  This behavior has a great impact on Independent Arrow Operations, where the programmers are given the option or decision when single line arrow operations are supposed to move the scrollbar positions.
	The scrollbar allows Independent Arrow Operations with the mousewheel and the arrow keys. The hiword of the lParam of the XWMncSCROLLBARevent holds the aggregate information useful in Independent Arrow Operation. If the message carried by the event indicates an independent line operation: either WMncSB_I_LINEDOWN, WMncSB_I_DRAGLINEDOWN, WMncSB_I_LINEUP, or WMncSB_I_DRAGLINEUP; and if such hiword is equal to 0, it means that it is the original operation of incrementing or decrementing of one line only. 
	If such hiword is greater than 0, or positive, it is the amount of aggregate value to be incremented (I_LINEUP) or decremented (I_LINEDOWN) .
	Note that orginally when the programmer decides to respond to the events, he or she invokes the DoIndepArrowResponse(short response) method, passing a response value of 1 to mean disregard the change, or a value of 3 to tell the control to proceed incrementing or decrementing by 1 only. Now, a new value of 4 may be passed to mean increment or decrement the aggregate value to the fullest. If the hiword in the lParam is 0, meaning default original, the aggregate value is implied to be 1. Meaning, 4 may be used as a shortcut to mean consider the change whatever is in the lParam.
	However, if the aggregate value is too high a change, the programmer may indicate the lower value by passing the negative of such lower value to the response. It may not be used to increase the aggregate value.

	Good Luck!

Remember the new site is http://quiltsoft.tripod.com/index.html
	
     This is an ActiveX scrollbar which can provide the most demanding scrolling needs of a programmer without the hassles commonly encountered in other kinds of scrollbar. It is easily configurable either by the user and programmer both at designtime and runtime. The scrollbar can scroll 32-bit data in a breeze, with easy mouse handling features.
     It is capable of multilevel scrolling and has two trackers doing this. Using this scrollbar 
for any application promises to be a wonderful experience both to the user and programmer.

Features:
1) 32-bit in RANGE capable (-7FFF FFFF to +7FFF FFFF)
2) dual tracker, coarse and fine
3) great mouse handling
4) multilevel tracking
5) elements or parts of scrollbar all easily configurable
6) bug-free compact logic (or thought so! please inform me of any)
7) fast and efficient


